For years, large multi-purpose computer systems have been used for processing or executing many different transactions, processes and programs initiated or requested by one or more users. Traditionally, the transactions executed on these large computer systems fall into two broad categories. The first category comprises "real-time" transactions, which refers to transactions that are responded to and handled as soon as they occur. The second category is called "batch" transactions, which are generally processed some time period after they are initiated or requested by a user. In the typical computer environment, the batch transactions are saved to be processed overnight while the system is undergoing minimum utilization. In this manner, the results of the batch transactions can be available the next morning for interpretation or use.
In large distributed computer networks, the real-time transactions can be serviced by programs called "onlines", that are programs which may support customer or end user applications or environments. Transactions that are processed in this manner are recorded for later use in what has been referred to as the "cycle" of the computer. When the batch transactions are processed they are included directly into the cycle, along with the real-time or online transaction. In order to obtain an accurate picture of the status of the computer system at any given time it is important to account for all of the transactions together, for example, when individual client accounts are updated. This process of updating account status if done incorrectly may produce the undesirable situation where charges may be posted before payments in a customer's account, which could temporarily make an account look different than it really is.
The cycle is thus a large collection of programs which process the transaction activity from the input sources of a large computer system in order to update accounts, create current screens and reports for clients, create statements and perform financial settlement with other computer systems and networks. Cycles can be subdivided into suites called "jobs" where each job can contain multiple programs called "steps." Closely related programs that depend on each other are often grouped together into the same job. A typical large computer system, therefore, can have hundreds of jobs that are executed on a daily basis. In such highly complex computer systems, the execution and scheduling of jobs may even be handled by a scheduling program that ensures that jobs are processed at the correct time and in the correct order. Obtaining status information at any given time on such complex computer systems has been a difficult endeavor.
Attempts have been made to determine and track the status of the many jobs and cycles executing on large computer systems. For example, manually generated flowcharts of system processes have been prepared in order to track the processes scheduled for, executed and completed on large computer systems at any given time. However, as the number of processes increases, these manually generated flowcharts become increasingly difficult and time consuming to create, and virtually impossible to maintain on a dynamic basis. Nevertheless, when system problems arise, such flowcharts are an invaluable management tool to correct any errors or problems with the system. One attempt at such manually generated flowcharts used a technique of color-coding the status of a job or process that would indicate when the process started, ended or abended. These hand drawn charts thus presented the status of the system at a given time in a visual fashion for the user.
As can be imagined, as the number and complexity of processes running on a computer increases, the above manual status approach quickly becomes difficult to maintain. In this era of expanding use of computers to perform many laborious tasks, it would be advantageous to have a program to continually monitor the status of the various processes executing on a given computer. Due to the complexity of monitoring the status of many hundreds of processes handled by a large computing system, however, one computer alone may not be sufficient to supply the computing power necessary to execute a program that provides this information to the user. Moreover, existing software operating systems do not provide sufficient architecture to handle large scale flowcharting of computing processes.
The prior art lacks the advantage of providing a real-time graphical representation of the status of one or more processes executing on a computer system. Such a display would preferably include flowcharts of currently scheduled, executing and completed processes on the computer system, which may also be color-coded to readily and visually reflect such status. Processes that stem from or trigger other processes would be also visually represented to the user. The program for providing such a graphical display would be capable of execution over a distributed computer system thus allowing for increased response time and distributed utilization of the system's resources. Accordingly, the user can observe on a personal computer attached to a mainframe computing system the status of any process handled by the mainframe computer.